package com.itheima.consumer.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Fanout 交换机以及相关配置的配置类
 */
@Configuration
public class FanoutConfig {
//    @Bean
    public FanoutExchange fanoutExchange1(){

        // 直接new
        return new FanoutExchange("hmall.faout2");
    }


    @Bean
    public FanoutExchange fanoutExchange2(){

        // 使用builder去创建
        return ExchangeBuilder.fanoutExchange("hmall.fanout2").build();
    }


    @Bean
    public Queue queue1(){
        return new Queue("new.fanout.queue1");
    }

    @Bean
    public Queue queue2(){
        // durable()  持久化,保存到磁盘中，但是默认就是持久化
        return QueueBuilder.durable("new.fanout.queue2").build();
    }


    @Bean
    public Binding binding(FanoutExchange fanoutExchange2, Queue queue1){
        return BindingBuilder.bind(queue1).to(fanoutExchange2);
    }

    @Bean
    public Binding binding2(){
        // 执行queue2()的时候，由于queue2() 声明了@Bean，所以不会再执行这个方法，只会从容器中去获取queue2()的返回值
        return BindingBuilder.bind(queue2()).to(fanoutExchange2());
    }
}
